using RAG.Application.Commands;
using RAG.Application.Dtos;

namespace RAG.Application.Interfaces;

/// <summary>
/// 角色服务接口
/// </summary>
public interface IAppRoleService
{
    /// <summary>
    /// 获取角色列表（分页）
    /// </summary>
    Task<ApiResult> GetRolesAsync(int page, int size, string? search = null);

    /// <summary>
    /// 根据ID获取角色详情
    /// </summary>
    Task<ApiResult> GetRoleByIdAsync(Guid roleId);

    /// <summary>
    /// 创建角色
    /// </summary>
    Task<ApiResult> CreateRoleAsync(CreateRoleDto dto);

    /// <summary>
    /// 更新角色
    /// </summary>
    Task<ApiResult> UpdateRoleAsync(Guid roleId, UpdateRoleDto dto);

    /// <summary>
    /// 删除角色
    /// </summary>
    Task<ApiResult> DeleteRoleAsync(Guid roleId);

    /// <summary>
    /// 启用角色
    /// </summary>
    Task<ApiResult> EnableRoleAsync(Guid roleId);

    /// <summary>
    /// 禁用角色
    /// </summary>
    Task<ApiResult> DisableRoleAsync(Guid roleId);

    /// <summary>
    /// 获取角色权限
    /// </summary>
    Task<ApiResult> GetRolePermissionsAsync(Guid roleId);

    /// <summary>
    /// 为角色分配权限
    /// </summary>
    Task<ApiResult> AssignPermissionsAsync(Guid roleId, AssignPermissionsDto dto);
} 